response重定向redirect(302)代码演示、重定向(redirect)和转发(forward)的区别、虚拟目录实时加?、缓存(304)

您所在的位置:网站首页 谷歌博客 重定向错误代码怎么办 response重定向redirect(302)代码演示、重定向(redirect)和转发(forward)的区别、虚拟目录实时加?、缓存(304)

response重定向redirect(302)代码演示、重定向(redirect)和转发(forward)的区别、虚拟目录实时加?、缓存(304)

2024-07-11 14:36| 来源: 网络整理| 查看: 265

在这里插入图片描述

一、response重定向

在这里插入图片描述

1.1重定向代码演示

配置tomcat看之前博客在这里插入图片描述 这里我们的tomcat虚拟目录为bbb,定义两个servlet redirectDemo1(servlet类写):

重定向不能使用request域来共享数据,而是要使用session来共享数据,要在这个1.jsp:session.setAttribute(“键”,“值”),然后在重定向后的2.jsp可以使用el表达式获取:${键};而且需要加虚拟目录。用户通过浏览器访问1.jsp就携带session自动去访问2.jsp了(网站状态栏会改变而已)

package cn.it.web.redirect; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author QLBF * @version 1.0 * @date 2020/11/23 18:32 */ @WebServlet("/re_Demo1") public class redirectDemo1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("re_Demo1....."); //简单的重定向方法,这里我的虚拟目录是bbb,所以这样写 response.sendRedirect("/bbb/re_Demo2"); //动态获取虚拟目录,一般用这个 //String contextPath = request.getContextPath(); //response.sendRedirect(contextPath+"/re_Demo2"); //访问百度 //response.sendRedirect("http://www.baidu.com"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }

redirectDemo2(servlet类写):

package cn.it.web.redirect; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author QLBF * @version 1.0 * @date 2020/11/23 18:32 */ @WebServlet("/re_Demo2") public class redirectDemo2 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("re_Demo2....."); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }

浏览器输入http://localhost:8080/bbb/re_Demo1就可以跳到re_Demo2了: 在这里插入图片描述 在这里插入图片描述

1.2 重定向(redirect)和转发(forward)的区别 重定向的特点:redirect(response对象调用) 地址栏发生变化重定向可以访问其他站点(服务器)的资源重定向是两次请求。不能使用request对象来共享数据,而是使用session 在这里插入图片描述 转发的特点:forward(request对象调用) 转发地址栏路径不变转发只能访问当前服务器下的资源转发是一次请求,可以使用request对象来共享数据 二、虚拟目录实时加?request.getContextPath()获取虚拟路径

路径写法:

路径分类相对路径:通过相对路径不可以确定唯一资源 如:./index.html不以/开头,以.开头路径规则:找到当前资源和目标资源之间的相对位置关系./:当前目录…/:后退一级目录 绝对路径:通过绝对路径可以确定唯一资源 如:http://localhost/day15/responseDemo2 /day15/responseDemo2以/开头的路径

虚拟目录何时加规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出

给客户端浏览器使用:需要加虚拟目录(项目的访问路径) 建议虚拟目录动态获取:request.getContextPath() 例子:html写的a标签中的href和form中的acction和 重定向redirect(因为重定向是服务器告诉浏览器本资源的路劲,最终还是浏览器访问的)…给服务器使用:不需要加虚拟目录 例子: 转发forward

总的来说就是内部服务器之间访问就不要加虚拟目录,外部访问内部就要加虚拟目录

三、缓存

在这里插入图片描述

HTTP状态码可见:HTTP状态码百度百科



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3